package smoketest.tomcat.listener;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.context.ApplicationEvent;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextClosedEvent;
import org.springframework.stereotype.Component;

/**
 * 实现方式一：
* ApplicationListener 接口为 Spring 提供的 而非 Spring boot 提供的
 * 用于实现优雅关机前 关闭资源的操作
**/
@Component
public class JobTaskListener implements ApplicationListener<ApplicationEvent> {

	private static final Log logger = LogFactory.getLog(JobTaskListener.class);


    @Override
    public void onApplicationEvent(ApplicationEvent applicationEvent) {
		/**
		 * 在spring bean容器销毁之前执行的事件，
		 * 比如 防止数据库连接池在任务终止前销毁
		 */
		if (applicationEvent instanceof ContextClosedEvent) {
			logger.info("  ******  优雅关机 关闭资源实现方式一   关闭相关的定时任务 相关的操作  ******     ");
            System.out.println("关闭相关的定时任务");
        }
    }
}